package com.forekenow.Demo9;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.sql.DriverManager;
import java.sql.SQLException;

import static java.lang.Class.forName;

/**
 *异常（exception）
 * 1.所有异常的根父类是Throwable
 * 2.Throwable有两个直接的子类：Error（错误）  Exception（异常）  我们主要处理的就是Exception
 *
 * 异常按照处理方式可以分为如下两种类型：
 * 1．检查性异常（checked exception）
 * 若系统运行时可能产生该类异常，则必须写出相应的处理代码，否则无法通过编译。
 * 2．非检查性异常（unchecked exception）
 * 非检查性异常也称之为RuntimeException，若系统运行时可能产生该类异常，则不必在程序中声明对该类异常的处理，就可以编译执行。
 *
 * 如何处理异常：try...catch
 * 语法：
 *  try {
 *                 //有可能出现异常的代码
 *             }
 *         }catch (Exception e){
 *             //回滚事物
 *             //处理异常
 *         }finally {
 *             //无论try块中有没有异常最终都会执行finally块中的代码
 *         }
 *
 *  throws:表示抛出异常（异常声明），通过这个关键字写到方法的后面
 *  语法：public void m1（） throws 异常类型{
 *
 *  }
 *  他可以表示为当前的方法有可能会产生异常，但是在这个方法中我们不去处理，谁调用这个方法谁来处理
 *
 *
 */
public class ExceptionDemo {

    public void m1() throws Exception{
        System.out.println("throws Exception");
    }
    public static void main(String[] args) {
        ExceptionDemo exceptionDemo = new ExceptionDemo();
        try {
            exceptionDemo.m1();
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
                //有可能出现异常的代码
            int [] array = {1,2,3,4,5,6};
            for (int i = 0; i <= array.length; i++) {
                System.out.println(array[i]);
            }
        }catch (Exception e){
            //回滚事物
            //处理异常
            System.out.println(e.getMessage());
        }finally {
            //无论try块中有没有异常最终都会执行finally块中的代码
            System.out.println("finally行");
        }
        System.out.println("如果以上代码出现异常，那么之后的语句无法执行");

//一个 try 后面可以有多个catch catch中的错误类型规则为由小（子类型）到大类型

        try {
            Class.forName("");
            DriverManager.getConnection("ser","32","");
        }catch (SQLException e){
            e.printStackTrace();
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}
